The present invention relates to a software utility intended to simplify the installation of add-in boards in a computer, e.g., in the slots of an industry standard architecture (ISA) computer system. (The ISA is exemplified by computer systems such as the IBM PC and the Compaq Deskpro 286.)
The drawings are Copyright 1989 Compaq Computer Corporation, All Rights Reserved. Permission is granted to make copies of the drawings solely in connection with obtaining a copy of this patent and for no other purpose.
In this context, the word "boards" is a common shorthand reference for an add-in circuit card. When properly configured and installed in an open slot, the hardware on a board operates in conjunction with other components of the computer system to perform certain functions.
Widely available boards include video display adapters, disk controllers, expanded memory boards, serial/parallel adapters, mouse controllers, network links, and communication adapters, to name but a The use of interchangeable circuit boards having various functions allows for low cost highly flexible computer systems to be developed.
Any board installed in a computer system must have certain of the system's "resources" allocated to it in order to be able to exchange signals to communicate with other components of the system.
Generally speaking, a bus is a group of electrical connections. Each connection resembles a telephone party line and to which a number of signal-generating and signal-processing components are connected.
Various components in the computer system communicate with each other by "broadcasting" signals on one or more of these electrical connections. Such components can include the central processing unit (CPU), system memory, input/output (I/O devices (e.g., disk drives, printers, video terminals, and the like) and other components.
Each such signal that is broadcast on a "party line" in this manner is typically coded with an identifier designating the component which is the intended recipient of the signal. A component connected to a signal bus in effect "listens" electrically to that bus for signals encoded with that component's own identifier. Each component on the signal bus "hears" all signals that are broadcast, but responds only to signals that include its identifier.
For example, the CPU might perform a write-to-memory operation by broadcasting a signal that is encoded with (a) the identifier for the particular memory device that is to be written to, and (b) the actual datum that is to be written to that memory device. All memory devices on the signal bus would "hear" the signal, but only one in particular would recognize its identifier and save the accompanying datum in its electronic memory circuits. In like manner, the CPU might later perform a read-from-memory operation by signalling the memory device to send a return data signal back to the CPU.
Signal buses generally contain four types of signal lines, on which signals can be broadcast. They are memory lines; interrupt request lines; direct memory access (DMA) channels; and input/output (I/O) ports.
Memory lines are used to transmit signals calling, e.g., for reading from or writing to memory. This process is briefly discussed above.
Interrupt request lines are typically designated IRQ 1, IRQ 2, etc. They are used to send interrupts to the CPU (or other interupt-supporting component). Generally speaking, when a component sends an interrupt to the CPU, the CPU suspends execution of the current program instruction(s); executes a specific "interrupt handler" routine or set of instructions associated with the particular interrupt; and resumes execution of the suspended current program instruction(s) at the point where it left off.
Direct memory access (DMA) channels permit specially equipped components to address memory without the assistance of the CPU (thus freeing the CPU for other work). DMA channels are typically used by components such as disk drives.
Input/output (I/O) ports are electrical connections to which external devices such as printers, telephone connections, etc., may be attached.
When an add-in board is plugged into an empty slot in a computer system, in effect it is being plugged into the four types of "party line" signal lines just described. Plainly, it is ordinarily preferable that no two components on a signal line be allocated the same system resources; electronic chaos could result if this were permitted to happen without compensating for that possibility in some way.
Circuit boards must generally be allocated one or more of these system resources, including interrupt request lines, DMA channels, input/output ports and memory address. It is generally advisable for the circuit board to be configured such that it is assigned unique system resources, i.e., those not already allocated to other circuit boards or components. However, in some instances, system resources may be allocated in such a manner where they may be shared by more than one circuit board or component.
Configuring a variety of circuit boards in a computer system may lead to conflicts in the allocation of common computer system resources. Various choices must be made for selecting the interrupt request lines, DMA channels and memory address locations which do not conflict with those of other circuit boards. Once the operator has selected the resources to be assigned to the board, the boards must actually be configured. The configuration of the boards often entails the setting of various jumpers and switches. A determination of the switch or jumper settings is necessary to allocate the specific resources for the circuit board and generally requires reference to documentation which accompanies the circuit board and/or computer system. In addition to the hardware configuration as described above, the circuit boards may also require software initialization which allocates the various resources to the circuit board and informs the computer system of the resources, such as input/output or communications ports used by the circuit board.
It will be appreciated that the configuration of multiple circuit boards within a computer system would require reference to various board and computer system manuals. Further, it may require reconfiguring boards already installed in a system, necessitating additional review of manuals and setting of switches, jumpers or software.